// 位运算
// | 或 (两位都为0，才为0)
// & 与 (两位都为1，才为1)

// a(),b() 代表变量，变量名（）无实际意义
// 修改时
// a(0000) -> a(0001)  对a 0000 赋值为 0001
// 使用 0000 | 0001 -> 最后的结果就是 a(0001)

// 查找时
// 查找 a(1111) 是否包含 b(0001  )
// 使用 1111 & 0001 -> 最后得到的就是 0001

// 移位运算  
// 语法： 1 << n 代表1向左移位 n 位 (左移)
// 语法： 1 >> n 代表1向右移位 n 位 （右移）

// 补充说明： 浏览器调试可以用 x..toString('2') 进行查看对应的二进制数值

/**
 * 利用二进制表示 vnode 中的节点类型
 */
export const ShapeFlages = {
    /**
     * 00001 Element 节点
     */
    ELEMENT: 1, // 00001
    /**
     * 00010 组件节点
     */
    STATEFUL_COMPONENT: 1 << 1,  // 00010 
    /**
     * 00100 文本子节点
     */
    TEXT_CHILDREN: 1 << 2, // 00100 
    /**
     * 01000 数组子节点
     */
    ARRAY_CHILDREN: 1 << 3, // 01000
    /**
     * 10000 插槽子节点
     */
    SLOT_CHILDREN: 1 << 4, // 10000
}